The process of finding and fixing a problem (i.e., a coding error or bug) in a computer program or application is often a large part of software development. Typically, in order to debug such a problem during production, the problem must be reproduced so that a developer or user can investigate. Once a problem is reproduced, it must be debugged and fixed.
Some providers of cloud computing platforms provide a suite of software components (e.g., Google App Engine, OpenShift, and CloudFoundry), sometimes referred to as a software stack, that an application developer can install on a virtual machine. The software stack provides a Platform-as-a-Service (PaaS) layer that contains functionality to support the developer's application. The PaaS layer can include functionality for testing, debugging, database integration, security management, health management, incremental updates, and auto scaling of the application.
In PaaS platforms, container technologies are often used to deploy application components to production. In this regard, application components may run in a container on a physical or virtual machine providing hardware virtualization. A container emulates an operating system environment. Containers allow developers to have “dev/prod parity”, such that the software components deployed in production act the same as they do during development. One example implementation of containers is provided by the Docker project. The project provides a container engine that can instantiate containers on a machine and take down containers that are no longer needed.